﻿Imports Lourdes.BackEnd.BC
Imports Lourdes.BackEnd.Modelo
Public Class ucPersonaBuscador
  Private WithEvents frmBuscarPersona As frmClienteBuscar
  Public Event PersonaSeleccionada(ByRef pPersona As Persona)
  Private entClienteSeleccionado As Persona
  Private _HasClienteSeleccionado As Boolean


  Public ReadOnly Property HasClienteSeleccionado() As Boolean
    Get
      Return _HasClienteSeleccionado
    End Get
  End Property

  Public ReadOnly Property ClienteSeleccionado() As Persona
    Get
      Return entClienteSeleccionado
    End Get
  End Property

  Private Sub frmBuscarPersona_PersonaSeleccionada(ByVal pPersona As BackEnd.Modelo.Persona) Handles frmBuscarPersona.PersonaSeleccionada
    Try
      entClienteSeleccionado = pPersona
      _HasClienteSeleccionado = True
      With entClienteSeleccionado
        txtClienteCodigo.Value = .NumeroDoc
        txtClienteNombre.Text = .Nombre & " " & .Apellido
      End With
      RaiseEvent PersonaSeleccionada(entClienteSeleccionado)
    Catch ex As Exception
      Utils.ManejoErrores(ex)
    End Try
  End Sub

  Private Sub btnBuscador_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscador.Click
    BuscadorFactory()
    frmBuscarPersona.Show(Me.ParentForm)
  End Sub

  Private Sub BuscadorFactory()
    If frmBuscarPersona.IsDisposed Then
      frmBuscarPersona = New frmClienteBuscar
    End If
  End Sub

  Private Sub txtClienteCodigo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtClienteCodigo.KeyPress
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
      BuscarCodigo()
    End If
  End Sub

  Private Sub txtClienteCodigo_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtClienteCodigo.LostFocus
    Try
      BuscarCodigo()
    Catch ex As Exception
      Utils.ManejoErrores(ex)
    End Try
  End Sub

  Private Sub BuscarCodigo()
    Dim strDniNum As String
    txtClienteNombre.Text = ""
    _HasClienteSeleccionado = False
    entClienteSeleccionado = Nothing
    If IsNumeric(txtClienteCodigo.Value) Then
      strDniNum = txtClienteCodigo.Value.ToString
    Else      
      strDniNum = "0" 'si no hay ningun documento ingresado, pongo cero para que busque el CF por defecto.
    End If
    BuscadorFactory()
    frmBuscarPersona.GetPersonaByDocNum(strDniNum, Me.ParentForm)
    'frmBuscarPersona.Show(Me.ParentForm)

  End Sub

  Public Sub LimpiarBuscador()
    txtClienteCodigo.Value = ""
    txtClienteNombre.Text = ""
    _HasClienteSeleccionado = False
    entClienteSeleccionado = Nothing
  End Sub

  Public Sub CargarCliente(pPerId As Integer?)
    Dim PersonaBC As New BC_Persona

    entClienteSeleccionado = PersonaBC.GetByFilter(New PersonaFilter With {.PersonaId = pPerId}).FirstOrDefault
    _HasClienteSeleccionado = True
    With entClienteSeleccionado
      txtClienteCodigo.Value = .NumeroDoc
      txtClienteNombre.Text = .Nombre & " " & .Apellido
    End With

  End Sub

  Public Sub New()

    ' Llamada necesaria para el diseñador.
    InitializeComponent()

    ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
    entClienteSeleccionado = New Persona
    frmBuscarPersona = New frmClienteBuscar
    _HasClienteSeleccionado = False
  End Sub


End Class
